package com.example.myapplication

import android.annotation.SuppressLint
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.ImageView
import android.widget.TextView

// 城市列表适配器类，继承自BaseAdapter
class CityAdapter() : BaseAdapter() {

    // 定义城市数据类，包含图标资源ID、城市名称和城市简介
    data class CityData(val icon: Int, val text: String, var intro: String)

    // 创建城市数据列表，包含多个城市信息
    private val cityList = listOf<CityData>(
        CityData(R.drawable.bj, "北京", "中国首都，历史悠久，政治文化中心，古韵今风交融。"),
        CityData(R.drawable.sh, "上海", "中国东部国际大都市，金融中心，多元文化汇聚。"),
        CityData(R.drawable.gz, "广州", "中国南部沿海城市，经济发达，文化多元。"),
        CityData(R.drawable.sz, "深圳", "中国南部科技创新中心，现代化城市。"),
        CityData(R.drawable.hz, "杭州", "中国东南部历史文化名城，风景秀丽。"),
        CityData(R.drawable.nj, "南京", "中国东部历史文化名城，教育科研中心。"),
    )

    // 获取列表项总数
    override fun getCount(): Int {
        return cityList.size
    }

    // 获取指定位置的数据项
    override fun getItem(position: Int): Any? {
        return cityList[position]
    }

    // 获取指定位置的数据项ID
    override fun getItemId(position: Int): Long {
        return position.toLong()
    }

    // 获取列表项的视图布局
    /*
    特殊注解: 用于抑制 Lint 代码检查工具的特定警告。
    这里是没有用ViewHolder进行优化
    */
    @SuppressLint("ViewHolder")
    override fun getView(
        position: Int,
        convertView: View?,
        parent: ViewGroup?
    ): View? {
        // 获取当前位置的城市数据
        val cityData = cityList[position]
        // 创建并返回视图，设置其中的图标和文本
        // View.inflate() 是用于将 XML 布局文件转换为实际 View 对象的静态方法
        return View.inflate(parent?.context, R.layout.item_city_plus, null).apply {
            // 设置城市图标
            findViewById<ImageView>(R.id.cityIcon).setImageResource(cityData.icon)
            // 设置城市名称
            findViewById<TextView>(R.id.cityText).text = cityData.text
            // 设置城市简介
            findViewById<TextView>(R.id.cityIntro).text = cityData.intro
        }
    }
}